package com.niiwoo.activity.stage.service.prize;

import com.niiwoo.activity.stage.dto.request.prize.*;
import com.niiwoo.activity.stage.dto.response.prize.BatchOperationRespDTO;
import com.niiwoo.activity.stage.dto.response.prize.BatchPublishRespDTO;
import com.niiwoo.activity.stage.dto.response.prize.GainRecordSimpleRespDTO;
import com.niiwoo.activity.stage.dto.response.prize.PrizePublishPageQueryRespDTO;
import com.niiwoo.tripod.provider.dto.response.PageResponseDTO;

import java.util.List;

/**
 * Created by dengyunhui on 2017/11/28.
 * <p>
 * 批量发奖管理服务
 */
public interface PrizePublishDubboService {

    /**
     * 批量删除
     *
     * @param reqDTO
     */
    void batchDel(BatchOperationReqDTO reqDTO);

    /**
     * 导入奖品
     *
     * @param reqDTOList
     * @param currentUserId
     * @param currentUserRealName
     */
    BatchOperationRespDTO importExcel(List<PrizeSendPreImportReqDTO> reqDTOList, Long currentUserId, String currentUserRealName);

    /**
     * 导入单个奖品
     *
     * @param reqDTOList
     * @param currentUserId
     * @param currentUserRealName
     * @return null代表导入成功 not null代表错误原因
     */
    String importExcelRow(PrizeSendPreImportReqDTO reqDTOList, Long currentUserId, String currentUserRealName);

    /**
     * 批量导入奖品
     * @param prizeSendPreReqDTOList
     */
    default void importExcelRow(List<PrizeSendPreReqDTO> prizeSendPreReqDTOList){
        throw new UnsupportedOperationException("unimplemented");
    }
    /**
     * 获取批量发奖分页列表
     *
     * @param reqDTO
     * @return
     */
    PageResponseDTO<PrizePublishPageQueryRespDTO> getPublishPageList(PrizePublishPageQueryReqDTO reqDTO);

    /**
     * 批量发奖
     *
     * @param reqDTO
     * @return
     */
    BatchPublishRespDTO batchPublish(BatchPublishReqDTO reqDTO);

    /**
     * 自动发送红包
     */
    void autoSendPrize();

    /**
     * 根据奖品编码进行发奖
     * @param prizeDirectPublishReqDTO
     * @return
     */
    default public List<GainRecordSimpleRespDTO> directPublishPrize(PrizeDirectPublishReqDTO prizeDirectPublishReqDTO){
        throw new UnsupportedOperationException("");
    }
}
